# 1 主进程和子进程之间不共享全局变量; 各自操作各自的全局变量
# 2 创建子进程时, copy主进程的资源;
# 3 只不过主进程和子进程全局变量的名字相同而已

# 实例步骤
# 1 主进程创建全局变量 my_list
# 2 创建子进程write_data, 子进程read_data
# 3 测试子进程, 主进程各自有自己的内存空间

import time
import multiprocessing

# 全局变量
my_list = []

print({multiprocessing.current_process().name},'11111111')

def writedata():
    my_list.append('1')
    my_list.append('2')
    my_list.append('3')
    print({multiprocessing.current_process().name},"writedata->", my_list)


def readdata():
    time.sleep(1)
    print({multiprocessing.current_process().name},"readdata->", my_list)
    pass


if __name__ == '__main__':
    print({multiprocessing.current_process().name},'222222222')
    p1 = multiprocessing.Process(target=writedata,name='p1')
    p2 = multiprocessing.Process(target=readdata,name='p2')

    # 2 启动子进程
    p1.start()
    p2.start()

    # 2-2 设置让主进程等待子进程完成任务后,在向下运行
    p1.join()  # 让主进程等待p1完成任务 在向下运行;相当于有把主进程给阻塞
    p2.join()  # 让主进程等待p2完成任务 在向下运行;相当于有把主进程给阻塞

    print({multiprocessing.current_process().name},'333333333')
    print({multiprocessing.current_process().name},"main->", my_list)

print({multiprocessing.current_process().name},'444444')

